package com.ideviu.dao.hibernate;

import java.util.List;

import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Repository;

import com.ideviu.dao.NegocioDao;
import com.ideviu.model.Negocio;
import com.ideviu.model.User;
import com.ideviu.service.DataNotFoundException;

@Repository("negocioDao")
public class NegocioDaoHibernate extends GenericDaoHibernate<Negocio, Long> implements NegocioDao {

    public NegocioDaoHibernate() {
        super(Negocio.class);
    }

    /**
     * {@inheritDoc}
     */
    public Negocio saveNegocio(Negocio negocio) {
        if (log.isDebugEnabled()) {
            log.debug("id negocio: " + negocio.getId());
        }
        getHibernateTemplate().saveOrUpdate(negocio);
        // necessary to throw a DataIntegrityViolation and catch it in  the Manager
        getHibernateTemplate().flush();
        return negocio;
    }
    
    /**
     * {@inheritDoc}
     * @throws DataNotFoundException 
     */
    @SuppressWarnings("unchecked")
    public List<Negocio> getNegociosByIdUsuario(Long idUser) throws DataNotFoundException {
    	List negocios = getHibernateTemplate().find("from Negocio where usuario.id=?", idUser);
        if (negocios == null || negocios.isEmpty()) {
            throw new DataNotFoundException("No existen negocios asociados al usuario con id '" + idUser);
        } else {
            return negocios;
        }
    }
   
}
